Research Meteostat
After some researches about meteostat data nearest station in DE that
belongs to Kelheim region are:
- “Mallersdorf-Pfaffenberg/Niederbayern” with an id: “D3147”
- “Neumarkt / Höhenberg” with and id: “69110”
- Uebungsdorf / Emhof
there are many of them so I am starting to think about extracting all
from the Bayern or extract the nearest from longtitude/latitude point
with the Kelheim shapefile(using json and Euclid distances)
Kelheim
has no weather station, but it could be reconstructed with 2
other
Hohenfels with id: “10775” and Ingolstadt with id:“10860”
kelheim_data = {weight1}x{hohenfels} +
{weight2}x{inglstadt}
Also this site shows, that there are many of the Kelheim stations in
this area, but meteostat doesn’t contain them https://www.wunderground.com/dashboard/pws/IKELHE5
Research Weatherstack
weatherstack_kelheim = read_delim("data/Kelheim_weather_since_july_2008.csv",delim = ",")
Rows: 120312 Columns: 6── Column specification ─────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (1): description
dbl (4): hour, precip, visibility, totalsnow_daily
date (1): date
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
print(weatherstack_kelheim)
What to take as a reffer point isn’t clear because of the
date(before/after covid) and weather type (sunny,clear,temperature) Also
there is no temperature in it :/
Import mobility from Google
global_mobility = read_delim("data/Global_Mobility_Report.csv",",")
de_mobility = global_mobility %>% filter(country_region_code == "DE")
print(unique(de_mobility$sub_region_1))
[1] NA "Baden-Württemberg" "Bavaria" "Berlin"
[5] "Brandenburg" "Bremen" "Hamburg" "Hessen"
[9] "Lower Saxony" "Mecklenburg-Vorpommern" "North Rhine-Westphalia" "Rhineland-Palatinate"
[13] "Saarland" "Saxony" "Saxony-Anhalt" "Schleswig-Holstein"
[17] "Thuringia"
bavaria_mobility = de_mobility %>% filter(sub_region_1 == "Bavaria")
As we can see the most precise region to filter data from is Bavaria
:/
Relevant data for the , mobility
bavaria_mobility = de_mobility %>% filter(sub_region_1 == "Bavaria")
bavaria_mobility = bavaria_mobility %>% select(country_region,sub_region_1,date,residential_percent_change_from_baseline) %>%
mutate(residential_percent_change_from_baseline = -residential_percent_change_from_baseline,
source = "Google")%>%
rename(BundeslandID = sub_region_1,not_at_home_change = residential_percent_change_from_baseline)
bavaria_mobility = bavaria_mobility %>% select(date,BundeslandID,not_at_home_change,source)
#Need to filter out weekends
plt = ggplot(bavaria_mobility)+
geom_point(aes(x = date,y = not_at_home_change))
ggplotly(plt)
Import mobility from Senozon
snz_mobility = read_delim("data/mobilityData_OverviewBL_weekly.csv",";")
Rows: 2108 Columns: 4── Column specification ─────────────────────────────────────────────────────────────────────────────────
Delimiter: ";"
chr (1): BundeslandID
dbl (3): date, outOfHomeDuration, percentageChangeComparedToBeforeCorona
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
snz_mobility = snz_mobility %>% filter(BundeslandID == "Bayern") %>% mutate(source = "senozon") %>% select(-outOfHomeDuration) %>% rename(not_at_home_change = percentageChangeComparedToBeforeCorona)
snz_mobility$date = as.Date(strptime(snz_mobility$date,"%Y%m%d"))
plt = ggplot(snz_mobility)+
geom_point(aes(x = date,y = not_at_home_change))
ggplotly(plt)
Aggregate 2 sources
mob_joined = rbind(snz_mobility,bavaria_mobility)
plt = ggplot(mob_joined)+
geom_point(aes(x = date,y = not_at_home_change,color = source))
ggplotly(plt)
LS0tDQp0aXRsZTogIkJhZCB3ZWF0aGVyIEtlbGhlaW0gRGVtbyINCmF1dGhvcjogIk9sZWtzYW5kciBTb2JvbGlldiINCiNhbHdheXNfYWxsb3dfaHRtbDogdHJ1ZQ0Kb3V0cHV0Og0KICAjcGRmX2RvY3VtZW50OiBkZWZhdWx0DQogIGh0bWxfbm90ZWJvb2s6DQogICAgdGhlbWU6IGNvc21vDQogICAgaGlnaGxpZ2h0OiBtb25vY2hyb21lDQogICAgY29kZV9mb2xkaW5nOiBzaG93DQplZGl0b3Jfb3B0aW9uczogDQogIGNodW5rX291dHB1dF90eXBlOiBpbmxpbmUNCi0tLQ0KYGBge3IsIGluY2x1ZGU9IEZBTFNFfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCmxpYnJhcnkocGxvdGx5KQ0KYGBgDQoNCg0KIyMgKipSZXNlYXJjaCBNZXRlb3N0YXQqKg0KQWZ0ZXIgc29tZSByZXNlYXJjaGVzIGFib3V0IG1ldGVvc3RhdCBkYXRhIG5lYXJlc3Qgc3RhdGlvbiBpbiBERSB0aGF0IGJlbG9uZ3MgdG8gS2VsaGVpbSByZWdpb24gDQphcmU6DQoNCiogIk1hbGxlcnNkb3JmLVBmYWZmZW5iZXJnL05pZWRlcmJheWVybiIgd2l0aCBhbiBpZDogIkQzMTQ3Ig0KKiAiTmV1bWFya3QgLyBIw7ZoZW5iZXJnIiB3aXRoIGFuZCBpZDogIjY5MTEwIg0KKiBVZWJ1bmdzZG9yZiAvIEVtaG9mDQoNCnRoZXJlIGFyZSBtYW55IG9mIHRoZW0gc28gSSBhbSBzdGFydGluZyB0byB0aGluayBhYm91dCBleHRyYWN0aW5nIGFsbCBmcm9tIHRoZSBCYXllcm4gb3IgZXh0cmFjdCB0aGUgbmVhcmVzdCBmcm9tIGxvbmd0aXR1ZGUvbGF0aXR1ZGUgcG9pbnQgd2l0aCB0aGUgS2VsaGVpbSBzaGFwZWZpbGUodXNpbmcganNvbiBhbmQgRXVjbGlkIGRpc3RhbmNlcykgDQoNCltLZWxoZWltIGhhcyBubyB3ZWF0aGVyIHN0YXRpb24sIGJ1dCBpdCBjb3VsZCBiZSByZWNvbnN0cnVjdGVkIHdpdGggMiBvdGhlcl0oaHR0cHM6Ly93ZWF0aGVyc3BhcmsuY29tL3kvNzAzNzAvQXZlcmFnZS1XZWF0aGVyLWluLUtlbGhlaW0tR2VybWFueS1ZZWFyLVJvdW5kKQ0KDQpIb2hlbmZlbHMgd2l0aCBpZDogIjEwNzc1IiBhbmQgSW5nb2xzdGFkdCB3aXRoIGlkOiIxMDg2MCINCioqa2VsaGVpbV9kYXRhID0ge3dlaWdodDF9eHtob2hlbmZlbHN9ICsge3dlaWdodDJ9eHtpbmdsc3RhZHR9KioNCg0KQWxzbyB0aGlzIHNpdGUgc2hvd3MsIHRoYXQgdGhlcmUgYXJlIG1hbnkgb2YgdGhlIEtlbGhlaW0gc3RhdGlvbnMgaW4gdGhpcyBhcmVhLCBidXQgbWV0ZW9zdGF0IGRvZXNuJ3QgY29udGFpbiB0aGVtDQpodHRwczovL3d3dy53dW5kZXJncm91bmQuY29tL2Rhc2hib2FyZC9wd3MvSUtFTEhFNQ0KDQoNCg0KIyMgKipSZXNlYXJjaCBXZWF0aGVyc3RhY2sqKg0KDQpgYGB7ciBmaXJzdCBsb29rIGF0IHdlYXRoZXJzdGFjayBkYXRhIHNwZWNpZmljIHRvIEtlbGhlaW19DQp3ZWF0aGVyc3RhY2tfa2VsaGVpbSA9IHJlYWRfZGVsaW0oImRhdGEvS2VsaGVpbV93ZWF0aGVyX3NpbmNlX2p1bHlfMjAwOC5jc3YiLGRlbGltID0gIiwiKQ0KcHJpbnQod2VhdGhlcnN0YWNrX2tlbGhlaW0pDQpgYGANCldoYXQgdG8gdGFrZSBhcyBhIHJlZmZlciBwb2ludCBpc24ndCBjbGVhciBiZWNhdXNlIG9mIHRoZSBkYXRlKGJlZm9yZS9hZnRlciBjb3ZpZCkgYW5kIHdlYXRoZXIgdHlwZSAoc3VubnksY2xlYXIsdGVtcGVyYXR1cmUpDQpBbHNvIHRoZXJlIGlzIG5vIHRlbXBlcmF0dXJlIGluIGl0IDovDQoNCiMjICoqSW1wb3J0IG1vYmlsaXR5IGZyb20gR29vZ2xlKioNCmBgYHtyIGluY2x1ZGluZyBnb29nbGUgZ2VybWFueSBtb2JpbGl0eSBkYXRhLG1lc3NhZ2U9RkFMU0V9DQpnbG9iYWxfbW9iaWxpdHkgPSByZWFkX2RlbGltKCJkYXRhL0dsb2JhbF9Nb2JpbGl0eV9SZXBvcnQuY3N2IiwiLCIpDQpkZV9tb2JpbGl0eSA9IGdsb2JhbF9tb2JpbGl0eSAlPiUgZmlsdGVyKGNvdW50cnlfcmVnaW9uX2NvZGUgPT0gIkRFIikNCmBgYA0KDQpgYGB7ciB3aGF0IHJlZ2lvbnMgYXJlIGRhdGEgcHJvdmlkZWR9DQpwcmludCh1bmlxdWUoZGVfbW9iaWxpdHkkc3ViX3JlZ2lvbl8xKSkNCg0KYGBgDQpBcyB3ZSBjYW4gc2VlIHRoZSBtb3N0IHByZWNpc2UgcmVnaW9uIHRvIGZpbHRlciBkYXRhIGZyb20gaXMgQmF2YXJpYSA6Lw0KDQpSZWxldmFudCBkYXRhIGZvciB0aGUgLCBtb2JpbGl0eQ0KDQpgYGB7ciBtb2JpbGl0eSBkYXRhIGJhdmFyaWF9DQpiYXZhcmlhX21vYmlsaXR5ID0gZGVfbW9iaWxpdHkgJT4lIGZpbHRlcihzdWJfcmVnaW9uXzEgPT0gIkJhdmFyaWEiKQ0KYmF2YXJpYV9tb2JpbGl0eSA9IGJhdmFyaWFfbW9iaWxpdHkgJT4lIHNlbGVjdChjb3VudHJ5X3JlZ2lvbixzdWJfcmVnaW9uXzEsZGF0ZSxyZXNpZGVudGlhbF9wZXJjZW50X2NoYW5nZV9mcm9tX2Jhc2VsaW5lKSAlPiUNCiAgbXV0YXRlKHJlc2lkZW50aWFsX3BlcmNlbnRfY2hhbmdlX2Zyb21fYmFzZWxpbmUgPSAtcmVzaWRlbnRpYWxfcGVyY2VudF9jaGFuZ2VfZnJvbV9iYXNlbGluZSwNCiAgICAgICAgIHNvdXJjZSA9ICJHb29nbGUiKSU+JQ0KICByZW5hbWUoQnVuZGVzbGFuZElEID0gc3ViX3JlZ2lvbl8xLG5vdF9hdF9ob21lX2NoYW5nZSA9IHJlc2lkZW50aWFsX3BlcmNlbnRfY2hhbmdlX2Zyb21fYmFzZWxpbmUpDQpiYXZhcmlhX21vYmlsaXR5ID0gYmF2YXJpYV9tb2JpbGl0eSAlPiUgc2VsZWN0KGRhdGUsQnVuZGVzbGFuZElELG5vdF9hdF9ob21lX2NoYW5nZSxzb3VyY2UpDQojTmVlZCB0byBmaWx0ZXIgb3V0IHdlZWtlbmRzDQoNCnBsdCA9IGdncGxvdChiYXZhcmlhX21vYmlsaXR5KSsNCiAgZ2VvbV9wb2ludChhZXMoeCA9IGRhdGUseSA9IG5vdF9hdF9ob21lX2NoYW5nZSkpDQpnZ3Bsb3RseShwbHQpDQpgYGANCiMjICoqSW1wb3J0IG1vYmlsaXR5IGZyb20gU2Vub3pvbioqDQoNCmBgYHtyIGltcG9ydCBmcm9tIHNlbm96b259DQpzbnpfbW9iaWxpdHkgPSByZWFkX2RlbGltKCJkYXRhL21vYmlsaXR5RGF0YV9PdmVydmlld0JMX3dlZWtseS5jc3YiLCI7IikNCnNuel9tb2JpbGl0eSA9IHNuel9tb2JpbGl0eSAlPiUgZmlsdGVyKEJ1bmRlc2xhbmRJRCA9PSAiQmF5ZXJuIikgJT4lIG11dGF0ZShzb3VyY2UgPSAic2Vub3pvbiIpICU+JSBzZWxlY3QoLW91dE9mSG9tZUR1cmF0aW9uKSAlPiUgcmVuYW1lKG5vdF9hdF9ob21lX2NoYW5nZSA9IHBlcmNlbnRhZ2VDaGFuZ2VDb21wYXJlZFRvQmVmb3JlQ29yb25hKQ0Kc256X21vYmlsaXR5JGRhdGUgPSBhcy5EYXRlKHN0cnB0aW1lKHNuel9tb2JpbGl0eSRkYXRlLCIlWSVtJWQiKSkNCnBsdCA9IGdncGxvdChzbnpfbW9iaWxpdHkpKw0KICBnZW9tX3BvaW50KGFlcyh4ID0gZGF0ZSx5ID0gbm90X2F0X2hvbWVfY2hhbmdlKSkNCmdncGxvdGx5KHBsdCkNCmBgYA0KDQoNCg0KIyMgKipBZ2dyZWdhdGUgMiBzb3VyY2VzKioNCg0KYGBge3IgZ29vZ2xlK3Nlbm96b259DQptb2Jfam9pbmVkID0gcmJpbmQoc256X21vYmlsaXR5LGJhdmFyaWFfbW9iaWxpdHkpDQoNCnBsdCA9IGdncGxvdChtb2Jfam9pbmVkKSsNCiAgZ2VvbV9wb2ludChhZXMoeCA9IGRhdGUseSA9IG5vdF9hdF9ob21lX2NoYW5nZSxjb2xvciA9IHNvdXJjZSkpDQpnZ3Bsb3RseShwbHQpDQoNCmBgYA==